﻿-- =============================================
-- Author:		Rodrigo Ariel
-- Create date: 
-- Description:	
-- =============================================
CREATE PROCEDURE [dbo].[sp_InformeDeAlimentosAComprar] 
	-- Add the parameters for the stored procedure here
	@fechaDesdeChar varchar(8), 
	@fechaHastaChar varchar(8) 
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	declare @fechaDesde datetime
	declare @fechaHasta datetime
	
	select @fechaDesde=convert(datetime,@fechaDesdeChar)
	select @fechaHasta=convert(datetime,@fechaHastaChar)

	declare @temporal table(
		cantTotalRequerida decimal,
		idInsumo int,
		descripcionInsumo varchar(50),
		descripcionUnidadMedida varchar(50),
		abreviaturaMedida varchar(50),
		cantTotalDisponible decimal,
		cantTotalFaltante decimal
		)

	insert into @temporal(cantTotalRequerida, 
							idInsumo, 
							descripcionInsumo, 
							descripcionUnidadMedida, 
							abreviaturaMedida
							) 
	 
		SELECT     SUM(PorcionesAlimentacion.CantidadPlaneada) AS cantTotal, 
				
				INSUMOS.IDINSUMO,
				INSUMOS.DESCRIPCION AS InsumoDescripcion, 
				UNIDADESMEDIDAS.DESCRIPCION AS UnidadDeMedidaDescripcion, 
				UNIDADESMEDIDAS.ABREVIATURA
				
	FROM       porcionesAlimentacion 
					inner join cronogramaalimentacion
						on porcionesalimentacion.idcronogramaalimentacion=cronogramaalimentacion.idcronogramaalimentacion
						and  (CronogramaAlimentacion.FechaRealizada IS NULL) 
						AND (CronogramaAlimentacion.FechaAlimentacion 
								BETWEEN @fechaDesde AND @fechaHasta )
					inner join alimentos
						on alimentos.IDALIMENTO=porcionesalimentacion.idalimento
					inner join insumos
						on alimentos.idinsumo=insumos.idinsumo
					inner join unidadesmedidas
						on insumos.idunidadmedida=unidadesmedidas.idunidadmedida
	
GROUP BY 
				INSUMOS.IDINSUMO,
				INSUMOS.DESCRIPCION, 
				UNIDADESMEDIDAS.DESCRIPCION, 
				UNIDADESMEDIDAS.ABREVIATURA
				
	

DECLARE cursorTemp CURSOR
READ_ONLY
FOR select cantTotalRequerida, idInsumo
			from @temporal 
			

DECLARE @cantTotalRequerida decimal
DECLARE @idInsumo int
declare @cantidadEnStock decimal

OPEN cursorTemp

FETCH NEXT FROM cursorTemp INTO @cantTotalRequerida, @idInsumo
WHILE (@@fetch_status <> -1)
BEGIN
	IF (@@fetch_status <> -2)
	BEGIN
			select @cantidadEnStock=0
			
			select 	top 1 @cantidadEnStock=cantidadTotal 
			from stockinsumo 
			where 
				fecha <= @fechaHasta
				and idinsumo=@idInsumo
			order by idStock desc
			
						

			update @temporal
			set cantTotalDisponible=@cantidadEnStock
				,cantTotalFaltante=@cantTotalRequerida-@cantidadEnStock  
			where idInsumo=@idInsumo
		
	END
	FETCH NEXT FROM cursorTemp INTO @cantTotalRequerida, @idInsumo
END

CLOSE cursorTemp
DEALLOCATE cursorTemp
	

SELECT *, @fechaDesde fechaDesdeParametro, @fechaHasta fechaHastaParametro from @temporal

END
